package conservare.modelo.boleto;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name="TB_ARQUIVO_RET_DET")
public class ArquivoRetornoDetalhe implements Serializable {

	private static final long serialVersionUID = 1352582195798273782L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="BOLETO_RET_DET_ID")
	private Integer id;
	
	@OneToOne
	@JoinColumn(name="BOLETO_ID")
	private BoletoEmitido boleto; 
	
	@ManyToOne
	@JoinColumn(name="BOLETO_RET_ID")
	private ArquivoRetorno boletoRetorno;
	
	@Temporal(TemporalType.DATE)
	@Column(name="DT_VENC_TIT")
	private Date dataVencimentoDoTitulo;
	
	@Temporal(TemporalType.DATE)
	@Column(name="DT_PAG_TIT")
	private Date dataPagamentoDoTitulo;
	
	@Column(name="NOSSO_NUMERO")
	private String nossoNumero;
	
	@Column(name="VLR_MULTA_JUROS")
	private BigDecimal valorMultaJuros = BigDecimal.ZERO;
	
	@Column(name="VLR_DESCONTO")
	private BigDecimal valorDesconto = BigDecimal.ZERO;
	
	@Column(name="VLR_ABATIMENTO")
	private BigDecimal valorAbatimento = BigDecimal.ZERO;
	
	@Column(name="VLR_IOF")
	private BigDecimal valorIOF = BigDecimal.ZERO;
	
	@Column(name="VLR_PAGO")
	private BigDecimal valorPago = BigDecimal.ZERO;
	
	@Column(name="VLR_LIQ_CREDITADO")
	private BigDecimal valorLiquidoCreditado = BigDecimal.ZERO;
	
	@Column(name="BAIXA_PROCESSADA")
	private Boolean baixaProcessada = false;
	
	
	public Integer getId() {
		return id;
	}
	
	public BoletoEmitido getBoleto() {
		return boleto;
	}
	public void setBoleto(BoletoEmitido boleto) {
		this.boleto = boleto;
	}

	public ArquivoRetorno getBoletoRetorno() {
		return boletoRetorno;
	}

	public void setBoletoRetorno(ArquivoRetorno boletoRetorno) {
		this.boletoRetorno = boletoRetorno;
	}

	public Date getDataVencimentoDoTitulo() {
		return dataVencimentoDoTitulo;
	}
	public void setDataVencimentoDoTitulo(Date dataVencimentoDoTitulo) {
		this.dataVencimentoDoTitulo = dataVencimentoDoTitulo;
	}
	public String getNossoNumero() {
		return nossoNumero;
	}
	public void setNossoNumero(String nossoNumero) {
		this.nossoNumero = nossoNumero;
	}
	public BigDecimal getValorMultaJuros() {
		return valorMultaJuros;
	}
	public void setValorMultaJuros(BigDecimal valorMultaJuros) {
		this.valorMultaJuros = valorMultaJuros;
	}
	public BigDecimal getValorDesconto() {
		return valorDesconto;
	}
	public void setValorDesconto(BigDecimal valorDesconto) {
		this.valorDesconto = valorDesconto;
	}
	public BigDecimal getValorAbatimento() {
		return valorAbatimento;
	}
	public void setValorAbatimento(BigDecimal valorAbatimento) {
		this.valorAbatimento = valorAbatimento;
	}
	public BigDecimal getValorIOF() {
		return valorIOF;
	}
	public void setValorIOF(BigDecimal valorIOF) {
		this.valorIOF = valorIOF;
	}
	public BigDecimal getValorPago() {
		return valorPago;
	}
	public void setValorPago(BigDecimal valorPago) {
		this.valorPago = valorPago;
	}
	public BigDecimal getValorLiquidoCreditado() {
		return valorLiquidoCreditado;
	}
	public void setValorLiquidoCreditado(BigDecimal valorLiquidoCreditado) {
		this.valorLiquidoCreditado = valorLiquidoCreditado;
	}
	
	public Date getDataPagamentoDoTitulo() {
		return dataPagamentoDoTitulo;
	}

	public void setDataPagamentoDoTitulo(Date dataPagamentoDoTitulo) {
		this.dataPagamentoDoTitulo = dataPagamentoDoTitulo;
	}

	public void setBaixaProcessada(Boolean baixaProcessada) {
		this.baixaProcessada = baixaProcessada;
	}

	public Boolean isBaixaProcessada() {
		return baixaProcessada;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ArquivoRetornoDetalhe other = (ArquivoRetornoDetalhe) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
	
	
	
	
}
